<!DOCTYPE html>
<!--主要是给搜索引擎看的.这里即使指定为en,在body中依然可以使用中文-->
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>GBK JSON Fetch 示例</title>
</head>
<body>
<h3>通过 Fetch 发送 GBK 编码的 JSON 到服务器</h3>
<button onclick="sendGBKJson()">发送 JSON（GBK）</button>

<script src="https://cdn.jsdelivr.net/npm/encoding-japanese@2.0.0/encoding.min.js"></script>
<script>
    function sendGBKJson() {
        const jsonObj = {
            // name: "徐璈", // 罕见汉字
            name: "时春跃",
            age: 30
        };

        const jsonString = JSON.stringify(jsonObj);

        // 使用 encoding.js 将字符串转为 GBK 字节
        const gbkBytes = Encoding.convert(Encoding.stringToCode(jsonString), 'GBK');
        const uint8Array = new Uint8Array(gbkBytes);

        // 构造 GBK 编码的 Blob 作为请求体
        const blob = new Blob([uint8Array], { type: "application/json; charset=GBK" });

        fetch("/json", {
            method: "POST",
            body: blob
            // 不设置 headers，避免 fetch 自动添加 UTF-8 编码的 Content-Type
        })
            .then(response => response.arrayBuffer())
            .then(buffer => {
                const text = new TextDecoder("gbk").decode(buffer);
                alert("服务器响应：" + text);
            })
            .catch(err => {
                console.error("请求失败：", err);
            });
    }
</script>
</body>
</html>
